// COMMON USE OBJECT
var COMMON = {
    // web context
    context : 'http://www.youbrainy.com/',
    
    idCounter : 1,
    
    // dom
    autoDomId : function(html){
		var id = 'common_auto_id_' + this.idCounter;
		if(!$('#' + id).get().length){
			$('body').append('<div id="' + id + '" style="display:none">' + html + '</div>');
		} else {
			$('#' + id).html(html);
		}
		this.idCounter++;
		return id;
	},
    
    // dialog show
    dialogYesNo : function(options) {
		options.buttons = [
		{
			text : 'Đúng',
			click : function(){
				options.yes();
			}
		},{
			text : 'Không',
			click : function(){
				if(options.no){
					options.no();
				}
				dialog.dialog('close');
			}
		}
		];
		var dialog = this.dialogShow(options);
    },
    dialogOkCancel : function(options){
    	options.buttons = [
   		{
   			text : 'Đồng ý',
   			click : function(){
   				options.ok();
   			}
   		},{
   			text : 'Hủy',
   			click : function(){
   				if(options.cancel){
   					options.cancel();
   				}
   				dialog.dialog('close');
   			}
   		}
   		];
   		var dialog = this.dialogShow(options);
    },
    dialogAlert : function(options){
    	options.title = options.title ? options.title : 'Thông báo';
    	options.buttons = [{
  			text : 'Đóng',
  			click : function(){
    			if(options.ok) {
    				options.ok();
    			} else {
    				dialog.dialog('close');
    			}
  			}
  		}];
    	var dialog = this.dialogShow(options);
    },
    dialogShow : function(options) {
	    var id = options.id ? options.id : this.autoDomId(options.message);
	    if(!id.match(/^#/)){
	    	id = '#' + id;
	    }
	    var title = options.title ? options.title : '';
	    var buttons = options.buttons ? options.buttons : [];
	    var width = options.width ? options.width : 'auto';
	    var height = options.height ? options.height : 'auto';
	    var modal = options.modal ? options.modal : true;
	    return $(id).dialog( {
	        width : width,
	        height : height,
	        title : title,
	        modal : modal,
	        buttons : buttons
	    }).dialog('open');
    },

    // ajax call wrapper
    ajaxCall : function(url, params, options) {
    	if(!url.match(/^http:/i)){
    		url = this.context + url;
    	}
	    var type = options.type ? options.type : 'GET';
	    var cache = options.cache ? options.cache : false;
	    var async = options.async ? options.async : false;
	    var dataType = options.dataType ? options.dataType : 'JSON';
	    var successFn = options.success ? options.success : function(data) {
	    };
	    var errorFn = options.error ? options.error : function(data) {
	    	var message = data.message ? data.message : 'Trục trặc khi xử lý, bạn hãy đảm bảo kết nối internet trước khi thử  lại. Nếu vấn đề tiếp tục xảy ra, xin vui lòng thông báo lỗi với suport@youbrainy.com.';
    		COMMON.dialogAlert({
    			title : 'Thông báo',
    			message : message
    		});
	    };
	    $.ajax( {
	        url : url,
	        type : type,
	        cache : cache,
	        async : async,
	        data : params,
	        dataType : dataType,
	        error : function(responseData) {
	    		errorFn(responseData);
	        },
	        success : function(responseData) {
		        if (responseData.status != undefined) {
			        if (responseData.status) {
			        	errorFn(responseData);
			        } else {
			        	successFn(responseData);
			        }
		        } else {
		        	successFn(responseData);
		        }
	        }
	    });
    },
    ajaxLink : function(url, params, target, options){
    	options.cache = options.cache != undefined ? options.cache : true;
    	options.type = options.type ? options.type : 'GET';
    	var success = function(data){
    		if(data.message){
    			$(target).html(data.message);
    		} else {
    			$(target).html(data);
    		}
    	}
    	options.success = success;
    	this.ajaxCall(url, params, options);
    }
}